package com.ctshk.rpc.custom.req.inquiry;

import com.ctshk.rpc.custom.json.ContactTelephoneJson;
import com.ctshk.rpc.custom.req.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 询价单
 * </p>
 *
 * @author 谢诗宏
 * @since 2021-01-13
 */
@Data
@ApiModel(value="InquiryReq", description="询价单")
public class InquiryReq implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    @ApiModelProperty(value = "询价单标题")
    private String inquiryTitle;

    @ApiModelProperty(value = "询价单号")
    private String inquiryNumber;

    @ApiModelProperty(value = "出境类型(3出境定制 4入境定制 5會議會獎)")
    private Integer departType;

    @NotNull(message = "reqType必填")
    @ApiModelProperty(value = "请求类型(1 保存询价 2 发起询价)", required = true)
    private Integer reqType;

    /**
     * 基础数据 data start
     */
    @ApiModelProperty(value = "目的地主数据ID", required = true)
    private Long destinationId;

    @NotNull(message = "请输入目的地")
    @ApiModelProperty(value = "目的地", required = true)
    private String destination;

    @ApiModelProperty(value = "出发地主数据ID", required = true)
    private Long departurePlaceId;

    @NotNull(message = "请输入出发地")
    @ApiModelProperty(value = "出发地", required = true)
    private String departurePlace;

    @NotNull(message = "请输入预计出发日期")
    @ApiModelProperty(value = "预计出发日期", required = true)
    private LocalDate departureDate;

    @Valid
    @ApiModelProperty(value = "出行天数", required = true)
    private TravelDaysReq travelDaysReq;

    @ApiModelProperty(value = "总计人数")
    private Integer totalPeopleNum;

    @NotNull(message = "请输入人均预算")
    @ApiModelProperty(value = "人均预算", required = true)
    private BigDecimal capitaBudget;

    @NotNull(message = "请输入OP的ID")
    @ApiModelProperty(value = "OP的ID", required = true)
    private Long opId;

    /*@ApiModelProperty(value = "OP的员工号")
    private String opNumber;

    @ApiModelProperty(value = "OP姓名")
    private String opName;*/

    @NotNull(message = "请输入询价截止时间")
    @ApiModelProperty(value = "询价截止时间", required = true)
    private LocalDate inquiryEndTime;

    @ApiModelProperty(value = "销售ID")
    private Long salespersonId;

    @ApiModelProperty(value = "销售员工号")
    private String salespersonNumber;

    @ApiModelProperty(value = "销售姓名")
    private String salespersonName;

    @ApiModelProperty(value = "预计人数数组")
    private List<QuotationTouristTypeReq> touristTypes;
    /**
     * 基础数据 data end
     */


    /**
     * 服务要求 data start
     */
    @ApiModelProperty(value = "服务要求数组")
    private List<InquiryServiceRequireReq> serviceRequires;

    @ApiModelProperty(value = "服务要求附件")
    private String serviceRequireFiles;
    /**
     * 服务要求 data end
     */


    /**
     * 客户信息 data start
     */
    @ApiModelProperty(value = "客户名单文件")
    private String customerListFiles;

    @Valid
    @ApiModelProperty(value = "客户类型", required = true)
    private CustomerTypeReq customerTypeReq;

    @Valid
    @ApiModelProperty(value = "联络人", required = true)
    private ContactReq contactReq;

    @NotNull(message = "请输入联络人性别")
    @ApiModelProperty(value = "联络人性别", required = true)
    private Long contactGender;

    @NotNull(message = "联络电话不能为空")
    @ApiModelProperty(value = "联络电话Json列表",required = true)
    private List<ContactTelephoneJson> contactTelephoneJsonList;

    /*@NotNull(message = "请选择联络电话区号")
    @ApiModelProperty(value = "请选择联络电话区号", required = true)
    private Long contactTelAreaCode;

    @NotNull(message = "请输入联络电话")
    @ApiModelProperty(value = "请输入联络电话", required = true)
    private String contactTelephones;*/

    @ApiModelProperty(value = "联系邮箱")
    private String contactEmail;

    @ApiModelProperty(value = "内部备注")
    private String internalRemark;
    /**
     * 客户信息 data end
     */


}
